package com.higgins.client;

import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.higgins.client.dataModel.CoveringLetterDTO;
import com.higgins.client.dataModel.LawFirmDTO;
import com.higgins.client.dataModel.LawFirmTypeDTO;
import com.higgins.client.dataModel.RecipientDTO;
import com.higgins.client.dataModel.RegionDTO;
import com.higgins.client.dataModel.SectorDTO;
import com.higgins.client.dataModel.StrategyDTO;
import com.higgins.client.dataModel.StrategyRecipientCountDTO;
import com.higgins.client.dataModel.StrategyRecipientDTO;

/**
 * The client side stub for the RPC service.
 */
@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService {
//	String greetServer(String name) throws IllegalArgumentException;
	List<StrategyDTO> retrieveStrategys() throws IllegalArgumentException;
	String updateStrategy(StrategyDTO strategy) throws IllegalArgumentException;
	List<CoveringLetterDTO> retrieveCoveringLetters() throws IllegalArgumentException;
	String updateCoveringLetter(CoveringLetterDTO coveringLetterDTO) throws IllegalArgumentException;

	List<RegionDTO> retrieveRegions() throws IllegalArgumentException;
	String updateRegion(RegionDTO regionDTO) throws IllegalArgumentException;

	List<SectorDTO> retrieveSectors() throws IllegalArgumentException;
	String updateSector(SectorDTO sectorDTO) throws IllegalArgumentException;

	List<LawFirmTypeDTO> retrieveLawFirmTypes() throws IllegalArgumentException;
	
	List<LawFirmDTO> retrieveLawFirms() throws IllegalArgumentException;
    List<LawFirmDTO> retrieveLawFirms(SectorDTO sectorDTO, LawFirmTypeDTO lawFirmTypeDTO) throws IllegalArgumentException;
	String updateLawFirm(LawFirmDTO lawFirmDTO) throws IllegalArgumentException;

	List<RecipientDTO> retrieveRecipients(RegionDTO regionDTO, SectorDTO sectorDTO) throws IllegalArgumentException;
	List<RecipientDTO> retrieveRecipients(StrategyDTO strategyDTO) throws IllegalArgumentException;
	String updateRecipient(RecipientDTO recipientDTO) throws IllegalArgumentException;
	
	String setStrategyRecipient(StrategyRecipientDTO strategyRecipient) throws IllegalArgumentException;
	String removeStrategyRecipient(StrategyRecipientDTO strategyRecipient) throws IllegalArgumentException;
	List<StrategyRecipientDTO> retrieveStrategyRecipients(Long strategyId, Long regionId, Long sectorId) throws IllegalArgumentException;
	
	StrategyRecipientCountDTO retrieveStrategyRecipientCount(Long strategyId) throws IllegalArgumentException;
	String publishStrategy(Long strategyId) throws IllegalArgumentException;
	String unpublishStrategy(Long strategyId) throws IllegalArgumentException;
	Long retrieveLawFirmUnavailableStatus(RecipientDTO dto) throws IllegalArgumentException;
}
